{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- By: Ashutosh Singh\n",
    "- Email: singh.ashu@gmail.com\n",
    "- Reference: Advances in Financial Machine Learning, Marcos Lopez De Prado, pg 59\n",
    "\n",
    "\n",
    "# Sample Weights\n",
    "\n",
    "This chapter handles the challenge of sampling observations (with replacement) when they are not IID (independent and identically distributed). This is especially hard in financial data sets which are rarely IID. In the framework espoused by MLDP in AFML, observations are labeled using triple-barrier method. Therein, each label has a start time (given by the index) and an end time.  The end time corresponds to the time when one of the barriers is touched. Consider a hypothetical example of four labels - A, B, C and D with their start and end times.\n",
    "\n",
    "A was generated at $t_1$ and triggered on $t_8$\n",
    "\n",
    "B was generated at $t_3$ and triggered on $t_6$\n",
    "\n",
    "C was generated on $t_7$ and triggered on $t_9$\n",
    "\n",
    "D was generated on $t_10$ and triggered on $t_12$\n",
    "\n",
    "\n",
    "In this case we see that A used information about returns on $[t_1,t_8]$ to generate label-endtime which overlaps with $[t_3, t_6]$ which was used by B and C, however D didn't use any returns information which was used by to label other samples. \n",
    "\n",
    "## Concurrency in labels\n",
    "\n",
    "We say that labels $y_i$ and $y_j$ are concurrent at $t$ if they are a function of at least one common return at $r_{t-1,t}$. In the example above, in terms of concurrency label D is the cleanest as it doesn't use any piece of information from other labels, while A has most overlap as it uses information from both B and C. It is desirable to use a data set that has least amount of overlap to train an algorithm.   \n",
    "\n",
    "We can measure average label uniqueness (or non-overlap) using get_av_uniqueness_from_tripple_barrier function from mlfinlab package. \n",
    "\n",
    "## Sampling with replacement  \n",
    "Bagging algorithms resort to sampling with replacement (or bootstrapping) but when observations overlap with one another then bootstrapping is susceptible to creating samples which have redundancy. This makes the algorithms that use bootstrapping such as random forest inefficient because in-bag observations to be very similar to the out-of-bag ones, inflating the accuracy of out-of-bag accuracy.\n",
    "\n",
    "## Sequenctial bootstrap process\n",
    "In the first draw, an observation is drawn from the uniform distribution. For the second draw, the sequential bootstrap (SB) reduces the probability of the observation that was drawn earlier from being drawn again. This process continues until the required number of draws are made. To implement this scheme, we first need to determine all the bars that a label (of an observation) uses. We compute a binary matrix that has bars on one axis and the labels on the other (this is called indicator matrix). This matrix is then used to compute the the average uniqueness of each observation. \n",
    "\n",
    "The sequentially bootstrap process iteratively selects observations while adjusting the draw probabilities of each observation at each step of the loop.\n",
    "\n",
    "## Notebook\n",
    "In this notebook we provide the answers to the questions at the back of the Chapter 4.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.utils import resample\n",
    "from sklearn.utils import shuffle\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import GridSearchCV\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mlfinlab.filters import filters\n",
    "from mlfinlab.labeling import labeling\n",
    "from mlfinlab.util import utils"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mlfinlab.sampling import concurrent\n",
    "from mlfinlab.sampling import bootstrapping\n",
    "from mlfinlab.util import multiprocess"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.1 In Chapter 3. we denoted as t1 a pandas series of timestamps where the first barrier was touched, and the index was the timestamp of the observation. This was the output of the getEvents."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 (a) Compute a t1 series on dollar bars derived from e-mini S&P 500 futures tick data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Read in data\n",
    "# data = pd.read_csv('official_data/dollar_bars.csv', nrows=40000)\n",
    "data = pd.read_csv('../Sample-Data/dollar_bars.csv')\n",
    "\n",
    "data.index = pd.to_datetime(data['date_time'])\n",
    "data = data.drop('date_time', axis=1)\n",
    "close_prices = data['close']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "date_time\n",
      "2015-01-01 23:00:23.723    2056.75\n",
      "2015-01-02 07:07:35.156    2064.00\n",
      "2015-01-02 09:35:57.204    2060.50\n",
      "2015-01-02 12:59:42.176    2061.00\n",
      "2015-01-02 14:19:33.847    2063.75\n",
      "Name: close, dtype: float64\n",
      "count    24079.000000\n",
      "mean      2061.126864\n",
      "std         88.690949\n",
      "min       1805.750000\n",
      "25%       2013.750000\n",
      "50%       2073.250000\n",
      "75%       2114.250000\n",
      "max       2272.000000\n",
      "Name: close, dtype: float64\n",
      "\n",
      "No of NANs: 0\n"
     ]
    }
   ],
   "source": [
    "print(close_prices.head())\n",
    "print(close_prices.describe())\n",
    "print('\\nNo of NANs: {:}'.format(close_prices.isna().sum()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute daily volatility\n",
    "vol = utils.get_daily_vol(close=close_prices, lookback=50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Apply Symmetric CUSUM Filter and get timestamps for events\n",
    "# Note: Only the CUSUM filter needs a point estimate for volatility\n",
    "cusum_events = filters.cusum_filter(close_prices, threshold=vol.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-01-02 15:39:14.826   2015-01-04 23:20:12.567\n",
       "2015-01-02 20:47:02.488   2015-01-04 23:20:12.567\n",
       "2015-01-04 23:20:12.567   2015-01-06 02:16:54.528\n",
       "2015-01-05 14:49:36.175   2015-01-06 14:52:04.655\n",
       "2015-01-05 16:10:05.172   2015-01-06 16:11:27.929\n",
       "Name: date_time, dtype: datetime64[ns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Compute vertical barrier\n",
    "vertical_barriers = labeling.add_vertical_barrier(cusum_events, close_prices, num_days=1)\n",
    "vertical_barriers.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/media/ashu/data/Documents/WQU/Post-course/code/mlfinlab/mlfinlab/labeling/labeling.py:122: FutureWarning: \n",
      "Passing list-likes to .loc or [] with any missing label will raise\n",
      "KeyError in the future, you can use .reindex() as an alternative.\n",
      "\n",
      "See the documentation here:\n",
      "https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
      "  target = target.loc[t_events]\n"
     ]
    }
   ],
   "source": [
    "triple_barrier_events = labeling.get_events(close=close_prices,\n",
    "                                               t_events=cusum_events,\n",
    "                                               pt_sl=[1, 1],\n",
    "                                               target=vol,\n",
    "                                               min_ret=0.01,\n",
    "                                               num_threads=1,\n",
    "                                               vertical_barrier_times=vertical_barriers,\n",
    "                                               side_prediction=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>t1</th>\n",
       "      <th>trgt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-09 17:13:19.851</th>\n",
       "      <td>2015-01-11 23:31:19.054</td>\n",
       "      <td>0.010065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-15 13:45:55.324</th>\n",
       "      <td>2015-01-15 14:57:17.741</td>\n",
       "      <td>0.010148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-15 14:39:34.621</th>\n",
       "      <td>2015-01-16 00:15:15.421</td>\n",
       "      <td>0.010703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-30 10:09:09.112</th>\n",
       "      <td>2015-02-01 23:26:29.558</td>\n",
       "      <td>0.011492</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-30 14:48:27.262</th>\n",
       "      <td>2015-01-30 20:54:46.692</td>\n",
       "      <td>0.010769</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             t1      trgt\n",
       "2015-01-09 17:13:19.851 2015-01-11 23:31:19.054  0.010065\n",
       "2015-01-15 13:45:55.324 2015-01-15 14:57:17.741  0.010148\n",
       "2015-01-15 14:39:34.621 2015-01-16 00:15:15.421  0.010703\n",
       "2015-01-30 10:09:09.112 2015-02-01 23:26:29.558  0.011492\n",
       "2015-01-30 14:48:27.262 2015-01-30 20:54:46.692  0.010769"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "triple_barrier_events.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# triple_barrier_events"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 (b) Apply the function mpNumCoEvents to compute the number of overlapping outcomes at each point in time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mlfinlab.sampling import concurrent\n",
    "from mlfinlab.util import multiprocess"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_threads = 1\n",
    "num_conc_events = multiprocess.mp_pandas_obj(concurrent.num_concurrent_events, ('molecule', triple_barrier_events.index), num_threads, \n",
    "                                            close_series_index=close_prices.index, label_endtime=triple_barrier_events['t1'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24079"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# eliminate the duplicates\n",
    "num_conc_events = num_conc_events.loc[~num_conc_events.index.duplicated(keep='last')]\n",
    "\n",
    "# reindex based on the close prices\n",
    "num_conc_events = num_conc_events.reindex(close_prices.index).fillna(0)\n",
    "len(num_conc_events)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 (c) Plot the time-series of the number of concurrent labels on the primary axis, and the time series of exponentially weighted moving standard deviation of returns on the secondary axis "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "display_df = (pd.DataFrame()\n",
    "              .assign(vol=vol,\n",
    "                     num_conc_events=num_conc_events)\n",
    "              .drop_duplicates().dropna()\n",
    "             )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# display_df.plot()\n",
    "display_df[['vol', 'num_conc_events']].plot(secondary_y='vol', figsize=(10,8))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 (d) Produce a scatterplot of the number of concurrent labels (x-axis) and the exponentially weighted moving standard deviation of returns (y-axis). Can you appreciate the relationship?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "display_df.plot.scatter(x='num_conc_events', y='vol', figsize=(10, 8))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/ashu/anaconda3/envs/p36/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x=display_df['num_conc_events'], y=display_df['vol'], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# try polyfit\n",
    "x = display_df['num_conc_events']\n",
    "y = display_df['vol']\n",
    "z = np.polyfit(x, y, 2)\n",
    "p = np.poly1d(z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "xp = np.linspace(0, max(x)+1, 100)\n",
    "_ = plt.plot(x, y, '.', xp, p(xp), '-')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.2 Using thefunction mpSampleTW, compute the average uniqueness of each label. What is the first-order serial correlation, AR(1), of this time series? Is it statistically significant? Why? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "out = multiprocess.mp_pandas_obj(concurrent._get_average_uniqueness, ('molecule', triple_barrier_events.index), num_threads, \n",
    "                                 label_endtime=triple_barrier_events['t1'], num_conc_events=num_conc_events)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7efd346307f0>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#ACF plot\n",
    "pd.plotting.autocorrelation_plot(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from statsmodels.graphics.tsaplots import plot_acf, plot_pacf\n",
    "plt.figure(figsize=(10, 8))\n",
    "plt.subplot(211)\n",
    "plot_acf(out, ax=plt.gca(), lags=5)\n",
    "plt.subplot(212)\n",
    "plot_pacf(out, ax=plt.gca(), lags=5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The ACF chart shows the auocorrelation of average uniqueness of labels. The fact that the series is statistically significant at lags 1 and 2 indicate that uniqueness persists over time.  4.1.(c) shows that number of concurrent events are mostly zero except when volatility spikes. When the number of concurrent events is zero, then uniqueness is high. This means that we can expect autocorrelation at some level. Here it is at lags 1 and 2.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.3 Fit a random forest to a financial data set where the average uniqueness is de minimis   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Read in data\n",
    "# data = pd.read_csv('official_data/dollar_bars.csv', nrows=40000)\n",
    "data = pd.read_csv('../Sample-Data/dollar_bars.csv')\n",
    "\n",
    "data.index = pd.to_datetime(data['date_time'])\n",
    "data = data.drop('date_time', axis=1)\n",
    "data = data.loc['2015-02-03':'2015-08-31']\n",
    "close_prices = data['close']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.3 (a) What is the mean out-of-bag accuracy?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Define RSI "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute RSI\n",
    "def relative_strength_index(df, n):\n",
    "        \"\"\"Calculate Relative Strength Index(RSI) for given data.\n",
    "        https://github.com/Crypto-toolbox/pandas-technical-indicators/blob/master/technical_indicators.py\n",
    "        \n",
    "        :param df: pandas.DataFrame\n",
    "        :param n: \n",
    "        :return: pandas.DataFrame\n",
    "        \"\"\"\n",
    "        i = 0\n",
    "        UpI = [0]\n",
    "        DoI = [0]\n",
    "        while i + 1 <= df.index[-1]:\n",
    "            UpMove = df.loc[i + 1, 'high'] - df.loc[i, 'high']\n",
    "            DoMove = df.loc[i, 'low'] - df.loc[i + 1, 'low']\n",
    "            if UpMove > DoMove and UpMove > 0:\n",
    "                UpD = UpMove\n",
    "            else:\n",
    "                UpD = 0\n",
    "            UpI.append(UpD)\n",
    "            if DoMove > UpMove and DoMove > 0:\n",
    "                DoD = DoMove\n",
    "            else:\n",
    "                DoD = 0\n",
    "            DoI.append(DoD)\n",
    "            i = i + 1\n",
    "        UpI = pd.Series(UpI)\n",
    "        DoI = pd.Series(DoI)\n",
    "        PosDI = pd.Series(UpI.ewm(span=n, min_periods=n).mean())\n",
    "        NegDI = pd.Series(DoI.ewm(span=n, min_periods=n).mean())\n",
    "        RSI = pd.Series(round(PosDI * 100. / (PosDI + NegDI)), name='RSI_' + str(n))\n",
    "        # df = df.join(RSI)\n",
    "        return RSI\n",
    "\n",
    "def get_rsi(data, window=14):\n",
    "    df = data.copy(deep=True).reset_index()\n",
    "    rsi = relative_strength_index(df, window)\n",
    "    rsi_df = pd.Series(data=rsi.values, index=data.index)\n",
    "    return rsi_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### define Bollinger bands"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "def bbands(close_prices, window, no_of_stdev):\n",
    "    rolling_mean = close_prices.ewm(span=window).mean()\n",
    "    rolling_std = close_prices.ewm(span=window).std()\n",
    "\n",
    "    upper_band = rolling_mean + (rolling_std * no_of_stdev)\n",
    "    lower_band = rolling_mean - (rolling_std * no_of_stdev)\n",
    "\n",
    "    return rolling_mean, upper_band, lower_band"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>cum_vol</th>\n",
       "      <th>cum_dollar</th>\n",
       "      <th>cum_ticks</th>\n",
       "      <th>avg</th>\n",
       "      <th>upper</th>\n",
       "      <th>lower</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date_time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-06-18 16:14:33.833</th>\n",
       "      <td>2113.25</td>\n",
       "      <td>2114.00</td>\n",
       "      <td>2112.50</td>\n",
       "      <td>2113.00</td>\n",
       "      <td>33284</td>\n",
       "      <td>70332937.00</td>\n",
       "      <td>2894</td>\n",
       "      <td>2100.858385</td>\n",
       "      <td>2117.718850</td>\n",
       "      <td>2083.997920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-08-28 17:50:50.135</th>\n",
       "      <td>1974.25</td>\n",
       "      <td>1977.75</td>\n",
       "      <td>1971.50</td>\n",
       "      <td>1976.75</td>\n",
       "      <td>35452</td>\n",
       "      <td>70005105.25</td>\n",
       "      <td>5397</td>\n",
       "      <td>1978.240271</td>\n",
       "      <td>1992.286586</td>\n",
       "      <td>1964.193956</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-07-15 14:19:07.157</th>\n",
       "      <td>2103.50</td>\n",
       "      <td>2105.50</td>\n",
       "      <td>2103.25</td>\n",
       "      <td>2104.75</td>\n",
       "      <td>33307</td>\n",
       "      <td>70091777.00</td>\n",
       "      <td>3439</td>\n",
       "      <td>2097.625534</td>\n",
       "      <td>2111.816979</td>\n",
       "      <td>2083.434089</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-05-06 17:36:05.070</th>\n",
       "      <td>2074.75</td>\n",
       "      <td>2075.00</td>\n",
       "      <td>2068.75</td>\n",
       "      <td>2070.00</td>\n",
       "      <td>33795</td>\n",
       "      <td>70003482.75</td>\n",
       "      <td>4022</td>\n",
       "      <td>2081.862966</td>\n",
       "      <td>2095.041295</td>\n",
       "      <td>2068.684637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-05-26 15:35:44.107</th>\n",
       "      <td>2103.00</td>\n",
       "      <td>2106.25</td>\n",
       "      <td>2103.00</td>\n",
       "      <td>2106.25</td>\n",
       "      <td>33266</td>\n",
       "      <td>70004057.25</td>\n",
       "      <td>3138</td>\n",
       "      <td>2115.390171</td>\n",
       "      <td>2129.989035</td>\n",
       "      <td>2100.791307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-07-31 12:30:56.027</th>\n",
       "      <td>2101.25</td>\n",
       "      <td>2103.00</td>\n",
       "      <td>2097.75</td>\n",
       "      <td>2102.75</td>\n",
       "      <td>33366</td>\n",
       "      <td>70062501.25</td>\n",
       "      <td>4216</td>\n",
       "      <td>2098.431183</td>\n",
       "      <td>2107.400478</td>\n",
       "      <td>2089.461888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-06-24 15:12:23.613</th>\n",
       "      <td>2114.75</td>\n",
       "      <td>2114.75</td>\n",
       "      <td>2111.50</td>\n",
       "      <td>2112.25</td>\n",
       "      <td>33130</td>\n",
       "      <td>70003717.50</td>\n",
       "      <td>4442</td>\n",
       "      <td>2113.864369</td>\n",
       "      <td>2118.705170</td>\n",
       "      <td>2109.023568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-08-11 12:21:13.262</th>\n",
       "      <td>2087.50</td>\n",
       "      <td>2089.00</td>\n",
       "      <td>2083.25</td>\n",
       "      <td>2083.50</td>\n",
       "      <td>33564</td>\n",
       "      <td>70025631.00</td>\n",
       "      <td>3113</td>\n",
       "      <td>2089.541515</td>\n",
       "      <td>2105.017313</td>\n",
       "      <td>2074.065717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-07-10 15:57:37.609</th>\n",
       "      <td>2071.75</td>\n",
       "      <td>2072.50</td>\n",
       "      <td>2070.25</td>\n",
       "      <td>2070.50</td>\n",
       "      <td>33835</td>\n",
       "      <td>70086385.00</td>\n",
       "      <td>3136</td>\n",
       "      <td>2060.621122</td>\n",
       "      <td>2073.732724</td>\n",
       "      <td>2047.509520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-02-10 16:50:20.010</th>\n",
       "      <td>2052.50</td>\n",
       "      <td>2053.25</td>\n",
       "      <td>2051.25</td>\n",
       "      <td>2052.00</td>\n",
       "      <td>34108</td>\n",
       "      <td>70000600.00</td>\n",
       "      <td>11710</td>\n",
       "      <td>2048.555045</td>\n",
       "      <td>2055.919968</td>\n",
       "      <td>2041.190122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                            open     high      low    close  cum_vol  \\\n",
       "date_time                                                              \n",
       "2015-06-18 16:14:33.833  2113.25  2114.00  2112.50  2113.00    33284   \n",
       "2015-08-28 17:50:50.135  1974.25  1977.75  1971.50  1976.75    35452   \n",
       "2015-07-15 14:19:07.157  2103.50  2105.50  2103.25  2104.75    33307   \n",
       "2015-05-06 17:36:05.070  2074.75  2075.00  2068.75  2070.00    33795   \n",
       "2015-05-26 15:35:44.107  2103.00  2106.25  2103.00  2106.25    33266   \n",
       "2015-07-31 12:30:56.027  2101.25  2103.00  2097.75  2102.75    33366   \n",
       "2015-06-24 15:12:23.613  2114.75  2114.75  2111.50  2112.25    33130   \n",
       "2015-08-11 12:21:13.262  2087.50  2089.00  2083.25  2083.50    33564   \n",
       "2015-07-10 15:57:37.609  2071.75  2072.50  2070.25  2070.50    33835   \n",
       "2015-02-10 16:50:20.010  2052.50  2053.25  2051.25  2052.00    34108   \n",
       "\n",
       "                          cum_dollar  cum_ticks          avg        upper  \\\n",
       "date_time                                                                   \n",
       "2015-06-18 16:14:33.833  70332937.00       2894  2100.858385  2117.718850   \n",
       "2015-08-28 17:50:50.135  70005105.25       5397  1978.240271  1992.286586   \n",
       "2015-07-15 14:19:07.157  70091777.00       3439  2097.625534  2111.816979   \n",
       "2015-05-06 17:36:05.070  70003482.75       4022  2081.862966  2095.041295   \n",
       "2015-05-26 15:35:44.107  70004057.25       3138  2115.390171  2129.989035   \n",
       "2015-07-31 12:30:56.027  70062501.25       4216  2098.431183  2107.400478   \n",
       "2015-06-24 15:12:23.613  70003717.50       4442  2113.864369  2118.705170   \n",
       "2015-08-11 12:21:13.262  70025631.00       3113  2089.541515  2105.017313   \n",
       "2015-07-10 15:57:37.609  70086385.00       3136  2060.621122  2073.732724   \n",
       "2015-02-10 16:50:20.010  70000600.00      11710  2048.555045  2055.919968   \n",
       "\n",
       "                               lower  \n",
       "date_time                             \n",
       "2015-06-18 16:14:33.833  2083.997920  \n",
       "2015-08-28 17:50:50.135  1964.193956  \n",
       "2015-07-15 14:19:07.157  2083.434089  \n",
       "2015-05-06 17:36:05.070  2068.684637  \n",
       "2015-05-26 15:35:44.107  2100.791307  \n",
       "2015-07-31 12:30:56.027  2089.461888  \n",
       "2015-06-24 15:12:23.613  2109.023568  \n",
       "2015-08-11 12:21:13.262  2074.065717  \n",
       "2015-07-10 15:57:37.609  2047.509520  \n",
       "2015-02-10 16:50:20.010  2041.190122  "
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# compute bands\n",
    "window = 50\n",
    "data['avg'], data['upper'], data['lower'] = bbands(data['close'], window, no_of_stdev=1.5)\n",
    "data.sample(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute RSI\n",
    "rsi_df = get_rsi(data, window=14)\n",
    "data['rsi'] = pd.Series(data=rsi_df.values, index=data.index)\n",
    "\n",
    "# Drop the NaN values from our data set\n",
    "data.dropna(axis=0, how='any', inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 1.0    340\n",
      "-1.0    251\n",
      "Name: side, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# Compute sides\n",
    "data['side'] = np.nan \n",
    "\n",
    "long_signals = (data['close'] <= data['lower']) \n",
    "short_signals = (data['close'] >= data['upper']) \n",
    "\n",
    "data.loc[long_signals, 'side'] = 1\n",
    "data.loc[short_signals, 'side'] = -1\n",
    "\n",
    "print(data.side.value_counts())\n",
    "\n",
    "# Remove Look ahead bias by lagging the signal\n",
    "data['side'] = data['side'].shift(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 1.0    339\n",
      "-1.0    251\n",
      "Name: side, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# Save the raw data\n",
    "raw_data = data.copy()\n",
    "\n",
    "# Drop the NaN values from our data set\n",
    "data.dropna(axis=0, how='any', inplace=True)\n",
    "print(data.side.value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute daily volatility\n",
    "daily_vol = utils.get_daily_vol(close=data['close'], lookback=50)\n",
    "\n",
    "# Apply Symmetric CUSUM Filter and get timestamps for events\n",
    "# Note: Only the CUSUM filter needs a point estimate for volatility\n",
    "cusum_events = filters.cusum_filter(data['close'], threshold=daily_vol['2011-09-01':'2018-01-01'].mean() * 0.1)\n",
    "\n",
    "# Compute vertical barrier\n",
    "vertical_barriers = labeling.add_vertical_barrier(t_events=cusum_events, close=data['close'], num_days=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/media/ashu/data/Documents/WQU/Post-course/code/mlfinlab/mlfinlab/labeling/labeling.py:122: FutureWarning: \n",
      "Passing list-likes to .loc or [] with any missing label will raise\n",
      "KeyError in the future, you can use .reindex() as an alternative.\n",
      "\n",
      "See the documentation here:\n",
      "https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
      "  target = target.loc[t_events]\n",
      "2019-07-13 14:13:54.902887 100.0% apply_pt_sl_on_t1 done after 0.0 minutes. Remaining 0.0 minutes.\n"
     ]
    }
   ],
   "source": [
    "pt_sl = [0, 2]\n",
    "min_ret = 0.0005\n",
    "triple_barrier_events = labeling.get_events(close=data['close'],\n",
    "                                            t_events=cusum_events,\n",
    "                                            pt_sl=pt_sl,\n",
    "                                            target=daily_vol,\n",
    "                                            min_ret=min_ret,\n",
    "                                            num_threads=2,\n",
    "                                            vertical_barrier_times=vertical_barriers,\n",
    "                                            side_prediction=data['side'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tW    0.246979\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# Averge uniqueness\n",
    "avg_uniqueness = concurrent.get_av_uniqueness_from_tripple_barrier(triple_barrier_events, close_prices, num_threads=1)\n",
    "print(avg_uniqueness.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       " 1.0    208\n",
       "-1.0    125\n",
       "Name: side, dtype: int64"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels = labeling.get_bins(triple_barrier_events, data['close'])\n",
    "labels.side.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Log Returns\n",
    "raw_data['log_ret'] = np.log(raw_data['close']).diff()\n",
    "\n",
    "# Momentum\n",
    "raw_data['mom1'] = raw_data['close'].pct_change(periods=1)\n",
    "raw_data['mom2'] = raw_data['close'].pct_change(periods=2)\n",
    "raw_data['mom3'] = raw_data['close'].pct_change(periods=3)\n",
    "raw_data['mom4'] = raw_data['close'].pct_change(periods=4)\n",
    "raw_data['mom5'] = raw_data['close'].pct_change(periods=5)\n",
    "\n",
    "# Volatility\n",
    "window_stdev = 50\n",
    "raw_data['volatility'] = raw_data['log_ret'].rolling(window=window_stdev, min_periods=window_stdev, center=False).std()\n",
    "\n",
    "# Serial Correlation (Takes about 4 minutes)\n",
    "window_autocorr = 50\n",
    "\n",
    "raw_data['autocorr_1'] = raw_data['log_ret'].rolling(window=window_autocorr, min_periods=window_autocorr, center=False).apply(lambda x: x.autocorr(lag=1), raw=False)\n",
    "raw_data['autocorr_2'] = raw_data['log_ret'].rolling(window=window_autocorr, min_periods=window_autocorr, center=False).apply(lambda x: x.autocorr(lag=2), raw=False)\n",
    "raw_data['autocorr_3'] = raw_data['log_ret'].rolling(window=window_autocorr, min_periods=window_autocorr, center=False).apply(lambda x: x.autocorr(lag=3), raw=False)\n",
    "raw_data['autocorr_4'] = raw_data['log_ret'].rolling(window=window_autocorr, min_periods=window_autocorr, center=False).apply(lambda x: x.autocorr(lag=4), raw=False)\n",
    "raw_data['autocorr_5'] = raw_data['log_ret'].rolling(window=window_autocorr, min_periods=window_autocorr, center=False).apply(lambda x: x.autocorr(lag=5), raw=False)\n",
    "\n",
    "# Get the various log -t returns\n",
    "raw_data['log_t1'] = raw_data['log_ret'].shift(1)\n",
    "raw_data['log_t2'] = raw_data['log_ret'].shift(2)\n",
    "raw_data['log_t3'] = raw_data['log_ret'].shift(3)\n",
    "raw_data['log_t4'] = raw_data['log_ret'].shift(4)\n",
    "raw_data['log_t5'] = raw_data['log_ret'].shift(5)\n",
    "\n",
    "# Add fast and slow moving averages\n",
    "fast_window = 7\n",
    "slow_window = 15\n",
    "\n",
    "raw_data['fast_mavg'] = raw_data['close'].rolling(window=fast_window, min_periods=fast_window, center=False).mean()\n",
    "raw_data['slow_mavg'] = raw_data['close'].rolling(window=slow_window, min_periods=slow_window, center=False).mean()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Add Trending signals\n",
    "raw_data['sma'] = np.nan\n",
    "\n",
    "long_signals = raw_data['fast_mavg'] >= raw_data['slow_mavg']\n",
    "short_signals = raw_data['fast_mavg'] < raw_data['slow_mavg']\n",
    "raw_data.loc[long_signals, 'sma'] = 1\n",
    "raw_data.loc[short_signals, 'sma'] = -1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Re compute sides\n",
    "raw_data['side'] = np.nan\n",
    "\n",
    "long_signals = raw_data['close'] <= raw_data['lower'] \n",
    "short_signals = raw_data['close'] >= raw_data['upper'] \n",
    "\n",
    "raw_data.loc[long_signals, 'side'] = 1\n",
    "raw_data.loc[short_signals, 'side'] = -1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>cum_vol</th>\n",
       "      <th>cum_dollar</th>\n",
       "      <th>cum_ticks</th>\n",
       "      <th>avg</th>\n",
       "      <th>upper</th>\n",
       "      <th>lower</th>\n",
       "      <th>...</th>\n",
       "      <th>autocorr_4</th>\n",
       "      <th>autocorr_5</th>\n",
       "      <th>log_t1</th>\n",
       "      <th>log_t2</th>\n",
       "      <th>log_t3</th>\n",
       "      <th>log_t4</th>\n",
       "      <th>log_t5</th>\n",
       "      <th>fast_mavg</th>\n",
       "      <th>slow_mavg</th>\n",
       "      <th>sma</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date_time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-02-03 15:02:12.773</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-02-03 15:07:20.968</th>\n",
       "      <td>2032.25</td>\n",
       "      <td>2034.50</td>\n",
       "      <td>2031.75</td>\n",
       "      <td>2032.25</td>\n",
       "      <td>34432.0</td>\n",
       "      <td>70002102.75</td>\n",
       "      <td>13165.0</td>\n",
       "      <td>2026.365845</td>\n",
       "      <td>2035.969525</td>\n",
       "      <td>2016.762165</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-02-03 15:14:10.455</th>\n",
       "      <td>2032.25</td>\n",
       "      <td>2032.50</td>\n",
       "      <td>2030.00</td>\n",
       "      <td>2031.25</td>\n",
       "      <td>34466.0</td>\n",
       "      <td>70003717.00</td>\n",
       "      <td>10916.0</td>\n",
       "      <td>2026.790317</td>\n",
       "      <td>2036.190829</td>\n",
       "      <td>2017.389805</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-02-03 15:21:15.748</th>\n",
       "      <td>2031.25</td>\n",
       "      <td>2031.50</td>\n",
       "      <td>2028.00</td>\n",
       "      <td>2029.50</td>\n",
       "      <td>34497.0</td>\n",
       "      <td>70012124.50</td>\n",
       "      <td>11723.0</td>\n",
       "      <td>2027.015090</td>\n",
       "      <td>2036.072304</td>\n",
       "      <td>2017.957877</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.000492</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-02-03 15:27:12.943</th>\n",
       "      <td>2029.50</td>\n",
       "      <td>2030.75</td>\n",
       "      <td>2027.50</td>\n",
       "      <td>2030.00</td>\n",
       "      <td>34501.0</td>\n",
       "      <td>70005857.25</td>\n",
       "      <td>11184.0</td>\n",
       "      <td>2027.252318</td>\n",
       "      <td>2036.015327</td>\n",
       "      <td>2018.489310</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.000862</td>\n",
       "      <td>-0.000492</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                            open     high      low    close  cum_vol  \\\n",
       "date_time                                                              \n",
       "2015-02-03 15:02:12.773      NaN      NaN      NaN      NaN      NaN   \n",
       "2015-02-03 15:07:20.968  2032.25  2034.50  2031.75  2032.25  34432.0   \n",
       "2015-02-03 15:14:10.455  2032.25  2032.50  2030.00  2031.25  34466.0   \n",
       "2015-02-03 15:21:15.748  2031.25  2031.50  2028.00  2029.50  34497.0   \n",
       "2015-02-03 15:27:12.943  2029.50  2030.75  2027.50  2030.00  34501.0   \n",
       "\n",
       "                          cum_dollar  cum_ticks          avg        upper  \\\n",
       "date_time                                                                   \n",
       "2015-02-03 15:02:12.773          NaN        NaN          NaN          NaN   \n",
       "2015-02-03 15:07:20.968  70002102.75    13165.0  2026.365845  2035.969525   \n",
       "2015-02-03 15:14:10.455  70003717.00    10916.0  2026.790317  2036.190829   \n",
       "2015-02-03 15:21:15.748  70012124.50    11723.0  2027.015090  2036.072304   \n",
       "2015-02-03 15:27:12.943  70005857.25    11184.0  2027.252318  2036.015327   \n",
       "\n",
       "                               lower ...   autocorr_4  autocorr_5    log_t1  \\\n",
       "date_time                            ...                                      \n",
       "2015-02-03 15:02:12.773          NaN ...          NaN         NaN       NaN   \n",
       "2015-02-03 15:07:20.968  2016.762165 ...          NaN         NaN       NaN   \n",
       "2015-02-03 15:14:10.455  2017.389805 ...          NaN         NaN       NaN   \n",
       "2015-02-03 15:21:15.748  2017.957877 ...          NaN         NaN -0.000492   \n",
       "2015-02-03 15:27:12.943  2018.489310 ...          NaN         NaN -0.000862   \n",
       "\n",
       "                           log_t2  log_t3  log_t4  log_t5  fast_mavg  \\\n",
       "date_time                                                              \n",
       "2015-02-03 15:02:12.773       NaN     NaN     NaN     NaN        NaN   \n",
       "2015-02-03 15:07:20.968       NaN     NaN     NaN     NaN        NaN   \n",
       "2015-02-03 15:14:10.455       NaN     NaN     NaN     NaN        NaN   \n",
       "2015-02-03 15:21:15.748       NaN     NaN     NaN     NaN        NaN   \n",
       "2015-02-03 15:27:12.943 -0.000492     NaN     NaN     NaN        NaN   \n",
       "\n",
       "                         slow_mavg  sma  \n",
       "date_time                                \n",
       "2015-02-03 15:02:12.773        NaN  NaN  \n",
       "2015-02-03 15:07:20.968        NaN  NaN  \n",
       "2015-02-03 15:14:10.455        NaN  NaN  \n",
       "2015-02-03 15:21:15.748        NaN  NaN  \n",
       "2015-02-03 15:27:12.943        NaN  NaN  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Remove look ahead bias\n",
    "raw_data = raw_data.shift(1)\n",
    "raw_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Now get the data at the specified events"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get features at event dates\n",
    "X = raw_data.loc[labels.index, :]\n",
    "\n",
    "# Drop unwanted columns\n",
    "X.drop(['avg', 'upper', 'lower', 'open', 'high', 'low', 'close', 'cum_vol', 'cum_dollar', 'cum_ticks','fast_mavg', 'slow_mavg',], axis=1, inplace=True)\n",
    "\n",
    "y = labels['bin']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Fit a model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Split data into training, validation and test sets\n",
    "X_training_test = X\n",
    "y_training_test = y\n",
    "X_train, X_test, y_train, y_test = train_test_split(X_training_test, y_training_test, test_size=0.2, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    218\n",
       "1     48\n",
       "Name: bin, dtype: int64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df = pd.concat([y_train, X_train], axis=1, join='inner')\n",
    "train_df['bin'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Note that true positives (1) are a less than 25% of the false positives (0).  We would want to rebalance the class weights to pay more attention to true positives (and less to false positives)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create training data\n",
    "y_train = train_df['bin']\n",
    "X_train= train_df.loc[:, train_df.columns != 'bin']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100 5 42\n"
     ]
    }
   ],
   "source": [
    "# extract parameters\n",
    "n_estimator = 100\n",
    "depth = 5\n",
    "c_random_state = 42\n",
    "print(n_estimator, depth, c_random_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Out-of-bag Accuracy (OOB Score): 0.812030\n"
     ]
    }
   ],
   "source": [
    "# Random Forest Model\n",
    "rf = RandomForestClassifier(max_depth=depth, n_estimators=n_estimator, oob_score=True,\n",
    "                            criterion='entropy', random_state=c_random_state)\n",
    "rf.fit(X_train, y_train.values.ravel())\n",
    "print(\"Out-of-bag Accuracy (OOB Score): {:.6f}\".format(rf.oob_score_))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### *The out of bag accuracy in a data-set that has low uniqueness is very high (81%) ... commenting on observations with low uniquness, section 4.5 of AFML, page 63 states, \"random sampling will make out-of-bag examples very similar to in-the-bag ones, the OOB accuracy would be grossly inflated\"*  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.3 (b) what is the mean accuracy of k-fold cross-validation (without shuffling) on the same dataset?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KFold(n_splits=5, random_state=1, shuffle=False)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# k-fold\n",
    "no_of_folds = 5\n",
    "kfold = KFold(shuffle=False, random_state=1, n_splits=no_of_folds)\n",
    "print(kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "accuracy_array = np.zeros(no_of_folds)\n",
    "i = 0\n",
    "for train_index, test_index in kfold.split(X_training_test):\n",
    "    # print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n",
    "    X_train, X_test = X.iloc[train_index], X.iloc[test_index]\n",
    "    y_train, y_test = y.iloc[train_index], y.iloc[test_index]\n",
    "    rf.fit(X_train, y_train.values.ravel())\n",
    "\n",
    "    y_pred_rf = rf.predict_proba(X_test)[:, 1]\n",
    "    y_pred = rf.predict(X_test)\n",
    "    accuracy_array[i] = accuracy_score(y_test, y_pred)\n",
    "    i += 1\n",
    "    # print(accuracy_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.8358209  0.74626866 0.88059701 0.81818182 0.66666667]\n",
      "Mean KFold accuracy: 0.789507\n"
     ]
    }
   ],
   "source": [
    "print(accuracy_array)\n",
    "print(\"Mean KFold accuracy: {:.6f}\".format(np.mean(accuracy_array)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### *The mean accuracy from KFold is 79% - 2 percentatge point lower than OOB accuracy score. The OOB score is more biased because in case of sampling with replacement, there is higher redundancy within the in-the-bag observations. This in turn causes overestimation of accuracy.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.4 Modify the code in Section 4.7 to apply an exponential time-decay factor   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Snippet 4.11 Implementation of time-decay factors\n",
    "def get_time_decay(tw, clf_last_w=1.):\n",
    "    # apply piecewise-linear decay to observed uniqueness (tw)\n",
    "    # newest observation gets weight=1, oldest observation gets weight=clf_last_w\n",
    "    clf_w = tw.sort_index().cumsum()\n",
    "    if clf_last_w >= 0:\n",
    "        slope = (1. - clf_last_w) / clf_w.iloc[-1]\n",
    "    else:\n",
    "        slope = 1. /((clf_last_w + 1) * clf_w.iloc[-1])\n",
    "    \n",
    "    const = 1. - slope * clf_w.iloc[-1]\n",
    "    clf_w = const + slope * clf_w\n",
    "    clf_w[clf_w < 0] = 0\n",
    "    print(\"Constant: {:.6f}, Slope: {:.6f}\".format(const, slope))\n",
    "    return clf_w\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "# implementation of exponential time-decay factors\n",
    "def get_time_decay_exp_old(tw, decay_rate=1.0, percent_of_zero_wts=0.):\n",
    "    clf_w = tw.sort_index().cumsum()\n",
    "    last_value = clf_w.iloc[-1]\n",
    "\n",
    "    # create the output weights array\n",
    "    out_wts = np.zeros(len(clf_w))\n",
    "    for i in np.arange(len(clf_w)):\n",
    "        if i < int(round(len(clf_w) * percent_of_zero_wts)):\n",
    "            out_wts[i] = 0\n",
    "        else:\n",
    "            out_wts[i] = np.exp((decay_rate - 1.) * (last_value - clf_w[i]))        \n",
    "    return out_wts\n",
    "\n",
    "def get_time_decay_exp(tw, decay_rate=1.0, percent_of_zero_wts=0.):\n",
    "    clf_w = tw.sort_index().cumsum()\n",
    "    last_value = clf_w.iloc[-1]\n",
    "\n",
    "    # create the output weights array\n",
    "    out_wts = [0. if i < int(round(len(clf_w) * percent_of_zero_wts)) else np.exp((decay_rate - 1.) * (last_value - clf_w[i])) for i in np.arange(len(clf_w))]\n",
    "    return np.asarray(out_wts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Constant: 1.000000, Slope: 0.000000\n",
      "Constant: 0.750000, Slope: 0.002870\n",
      "Constant: 0.500000, Slope: 0.005739\n",
      "Constant: -0.333333, Slope: 0.015304\n",
      "Constant: -1.000000, Slope: 0.022957\n"
     ]
    }
   ],
   "source": [
    "decay_p1 = get_time_decay(out, 1.)\n",
    "decay_p75 = get_time_decay(out, .75)\n",
    "decay_p5 = get_time_decay(out, .5)\n",
    "decay_pm25 = get_time_decay(out, -.25)\n",
    "decay_pm5 = get_time_decay(out, -0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "261"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "decay_factor_linear_df = (pd.DataFrame(index=out.index)\n",
    "                          .assign(\n",
    "                              decay_p1=decay_p1,\n",
    "                              decay_p75=decay_p75,\n",
    "                              decay_p5=decay_p5,\n",
    "                              decay_pm25=decay_pm25,\n",
    "                              decay_pm5=decay_pm5\n",
    "                              )\n",
    "                      )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7efd20535630>"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "decay_factor_linear_df.plot(figsize=(12,10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "percent_of_zero_wts = 0.0\n",
    "decay_rate = 0.94 \n",
    "decay_exp_p99 = get_time_decay_exp(out, decay_rate=0.99, percent_of_zero_wts=percent_of_zero_wts)\n",
    "decay_exp_p94 = get_time_decay_exp(out, decay_rate=0.94, percent_of_zero_wts=percent_of_zero_wts)\n",
    "decay_exp_p100 = get_time_decay_exp(out, decay_rate=1.0, percent_of_zero_wts=percent_of_zero_wts)\n",
    "decay_exp_p99_20 = get_time_decay_exp(out, decay_rate=0.99, percent_of_zero_wts=.2)\n",
    "decay_exp_p94_20 = get_time_decay_exp(out, decay_rate=0.94, percent_of_zero_wts=0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "decay_factor_exp_df = (pd.DataFrame(index=out.index)\n",
    "                       .assign(\n",
    "                              decay_p99=decay_exp_p99,\n",
    "                              decay_p94=decay_exp_p94,\n",
    "                              decay_p100=decay_exp_p100,\n",
    "                              decay_pm25=decay_exp_p99_20,\n",
    "                              decay_pm5=decay_exp_p94_20\n",
    "                              )\n",
    "                      )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7efd1f73ba20>"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "decay_factor_exp_df.plot(figsize=(12,10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.5 Consider you have applied meta-labels to events determined by a trend-following model. Suppose that two-thirds of the labels are 0 and one third of the labels are 1.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    218\n",
       "1     48\n",
       "Name: bin, dtype: int64"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df['bin'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create training data\n",
    "y_train = train_df['bin']\n",
    "X_train= train_df.loc[:, train_df.columns != 'bin']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100 5 42\n"
     ]
    }
   ],
   "source": [
    "# extract parameters\n",
    "n_estimator = 100\n",
    "depth = 5\n",
    "c_random_state = 42\n",
    "print(n_estimator, depth, c_random_state)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.5.a What happens if you fit a classfier without balancing class weights"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### *Fit the random forest classifier and compute the performance metrics* "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='entropy',\n",
      "                       max_depth=5, max_features='auto', max_leaf_nodes=None,\n",
      "                       min_impurity_decrease=0.0, min_impurity_split=None,\n",
      "                       min_samples_leaf=1, min_samples_split=2,\n",
      "                       min_weight_fraction_leaf=0.0, n_estimators=100,\n",
      "                       n_jobs=None, oob_score=True, random_state=42, verbose=0,\n",
      "                       warm_start=False)\n",
      "Out-of-bag Accuracy (OOB Score): 0.812030\n"
     ]
    }
   ],
   "source": [
    "# Random Forest Model\n",
    "rf = RandomForestClassifier(max_depth=depth, n_estimators=n_estimator, oob_score=True,\n",
    "                            criterion='entropy', random_state=c_random_state)\n",
    "print(rf)\n",
    "rf.fit(X_train, y_train.values.ravel())\n",
    "print(\"Out-of-bag Accuracy (OOB Score): {:.6f}\".format(rf.oob_score_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.84      1.00      0.92       218\n",
      "           1       1.00      0.17      0.29        48\n",
      "\n",
      "    accuracy                           0.85       266\n",
      "   macro avg       0.92      0.58      0.60       266\n",
      "weighted avg       0.87      0.85      0.80       266\n",
      "\n",
      "Confusion Matrix\n",
      "[[218   0]\n",
      " [ 40   8]]\n",
      "\n",
      "Accuracy\n",
      "0.849624060150376\n"
     ]
    }
   ],
   "source": [
    "# Performance Metrics\n",
    "y_pred_rf = rf.predict_proba(X_train)[:, 1]\n",
    "y_pred = rf.predict(X_train)\n",
    "fpr_rf, tpr_rf, _ = roc_curve(y_train, y_pred_rf)\n",
    "print(classification_report(y_train, y_pred))\n",
    "\n",
    "print(\"Confusion Matrix\")\n",
    "print(confusion_matrix(y_train, y_pred))\n",
    "\n",
    "print('')\n",
    "print(\"Accuracy\")\n",
    "print(accuracy_score(y_train, y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### *Although the accuracy is very high (84%), the recall of 1 (or true positive) is 17%. Recall is the fraction of the true positives that have been correctly picked. The confusion matrix says that TN or C(0,0) is 218 - 218 were true 0, with no mistakes in labeling FN or C(1,0) was zero. TP is C(1,1). Only 8 of the 48 were correctly labeled as 1.* "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.71      0.89      0.79        47\n",
      "           1       0.29      0.11      0.15        19\n",
      "\n",
      "    accuracy                           0.67        66\n",
      "   macro avg       0.50      0.50      0.47        66\n",
      "weighted avg       0.59      0.67      0.61        66\n",
      "\n",
      "Confusion Matrix\n",
      "[[42  5]\n",
      " [17  2]]\n",
      "\n",
      "Accuracy\n",
      "0.6666666666666666\n"
     ]
    }
   ],
   "source": [
    "# Meta-label\n",
    "# Performance Metrics\n",
    "y_pred_rf = rf.predict_proba(X_test)[:, 1]\n",
    "y_pred = rf.predict(X_test)\n",
    "print(classification_report(y_test, y_pred))\n",
    "\n",
    "print(\"Confusion Matrix\")\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "print('')\n",
    "print(\"Accuracy\")\n",
    "print(accuracy_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### *When evaluating the out-of-sample data, the accuracy falls to 67%, the recall of 1 (or true positive) falls to 11%. Only 2 of the 19 labels were correctly identified.* "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.5.b A label 1 means true positive, and a label 0 means false positive. By applying balanced class weights, we are forcing the classifer to pay more attention to the true positives, and less attention to the false positives. Why does that make sense?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*We would like the classifier to learn how to pick true positives and it can do that better when there are more observations to learn from.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.5.c What is the distribution of the predicted labels. before and after applying balanced class weights?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RandomForestClassifier(bootstrap=True, class_weight='balanced_subsample',\n",
      "                       criterion='entropy', max_depth=5, max_features='auto',\n",
      "                       max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
      "                       min_impurity_split=None, min_samples_leaf=1,\n",
      "                       min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
      "                       n_estimators=100, n_jobs=None, oob_score=True,\n",
      "                       random_state=42, verbose=0, warm_start=False)\n",
      "Out-of-bag Accuracy (OOB Score): 0.804511\n"
     ]
    }
   ],
   "source": [
    "# Random Forest Model\n",
    "rf = RandomForestClassifier(max_depth=depth, n_estimators=n_estimator, oob_score=True,\n",
    "                            class_weight='balanced_subsample', criterion='entropy', \n",
    "                            random_state=c_random_state)\n",
    "print(rf)\n",
    "rf.fit(X_train, y_train.values.ravel())\n",
    "print(\"Out-of-bag Accuracy (OOB Score): {:.6f}\".format(rf.oob_score_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create training data\n",
    "y_train = train_df['bin']\n",
    "X_train= train_df.loc[:, train_df.columns != 'bin']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Out-of-bag Accuracy (OOB Score): 0.804511\n"
     ]
    }
   ],
   "source": [
    "rf.fit(X_train, y_train.values.ravel())\n",
    "print(\"Out-of-bag Accuracy (OOB Score): {:.6f}\".format(rf.oob_score_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.99      1.00      0.99       218\n",
      "           1       0.98      0.96      0.97        48\n",
      "\n",
      "    accuracy                           0.99       266\n",
      "   macro avg       0.98      0.98      0.98       266\n",
      "weighted avg       0.99      0.99      0.99       266\n",
      "\n",
      "Confusion Matrix\n",
      "[[217   1]\n",
      " [  2  46]]\n",
      "\n",
      "Accuracy\n",
      "0.9887218045112782\n"
     ]
    }
   ],
   "source": [
    "# Performance Metrics\n",
    "y_pred_rf = rf.predict_proba(X_train)[:, 1]\n",
    "y_pred = rf.predict(X_train)\n",
    "fpr_rf, tpr_rf, _ = roc_curve(y_train, y_pred_rf)\n",
    "print(classification_report(y_train, y_pred))\n",
    "\n",
    "print(\"Confusion Matrix\")\n",
    "print(confusion_matrix(y_train, y_pred))\n",
    "\n",
    "print('')\n",
    "print(\"Accuracy\")\n",
    "print(accuracy_score(y_train, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.73      0.81      0.77        47\n",
      "           1       0.36      0.26      0.30        19\n",
      "\n",
      "    accuracy                           0.65        66\n",
      "   macro avg       0.54      0.54      0.54        66\n",
      "weighted avg       0.62      0.65      0.63        66\n",
      "\n",
      "Confusion Matrix\n",
      "[[38  9]\n",
      " [14  5]]\n",
      "\n",
      "Accuracy\n",
      "0.6515151515151515\n"
     ]
    }
   ],
   "source": [
    "# Meta-label\n",
    "# Performance Metrics\n",
    "y_pred_rf = rf.predict_proba(X_test)[:, 1]\n",
    "y_pred = rf.predict(X_test)\n",
    "print(classification_report(y_test, y_pred))\n",
    "\n",
    "print(\"Confusion Matrix\")\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "print('')\n",
    "print(\"Accuracy\")\n",
    "print(accuracy_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### *In a balanced out-of-sample test, the recall of true positives increases to 26% from 11% - a 136% increase.* "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.6 Update the draw probabilities for the final draw in Section 4.5.3\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Snippet 4.3\n",
    "def get_ind_matrix(bar_ix, t1):\n",
    "    # get indicator matrix\n",
    "    ind_m = pd.DataFrame(0, index=bar_ix, columns=range(t1.shape[0]))\n",
    "    for i, (t0, t1) in enumerate(t1.iteritems()):\n",
    "        ind_m.loc[t0:t1, i] = 1\n",
    "    return ind_m\n",
    "\n",
    "\n",
    "def get_ind_mat_average_uniqueness(ind_mat):\n",
    "    \"\"\"\n",
    "    Snippet 4.4. page 65, Compute Average Uniqueness\n",
    "    Average uniqueness from indicator matrix\n",
    "\n",
    "    :param ind_mat: (pd.Dataframe) indicator binary matrix\n",
    "    :return: (float) average uniqueness\n",
    "    \"\"\"\n",
    "    conc = ind_mat.sum(axis=1)  # concurrency\n",
    "    unique = ind_mat.div(conc, axis=0)\n",
    "    avg_unique = unique[unique > 0].mean()  # average uniqueness\n",
    "    return avg_unique"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Set-up\n",
    "tl = pd.Series([2, 3, 5], index=[0, 2, 4])  # t0, t1 for each feature obs\n",
    "bar_ix = range(tl.max() + 1)\n",
    "# ind_m = bootstrapping.get_ind_matrix(bar_ix, tl)\n",
    "ind_m = get_ind_matrix(bar_ix, tl)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Prob: 0    0.454545\n",
      "1    0.272727\n",
      "2    0.272727\n",
      "dtype: float64\n",
      "\n",
      "Phi: [1, 2, 2]\n",
      "-----------------\n"
     ]
    }
   ],
   "source": [
    "avg_u = pd.Series()\n",
    "phi = [1, 2]\n",
    "\n",
    "for i in ind_m:\n",
    "    ind_m_ = ind_m[phi + [i]]\n",
    "    # avg_u.loc[i] = bootstrapping.get_ind_mat_average_uniqueness(ind_m_).iloc[-1]\n",
    "    avg_u.loc[i] = get_ind_mat_average_uniqueness(ind_m_).iloc[-1]\n",
    "\n",
    "prob = avg_u / avg_u.sum()\n",
    "print('Prob: {}\\n'.format(prob))\n",
    "phi += [np.random.choice(ind_m.columns, p=prob)]\n",
    "print('Phi: {}'.format(phi))\n",
    "print('-----------------')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.7 Section 4.5.3, suppose that number 2 is picked again in the second draw. What would the updated probabilities for the third draw?\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Set-up\n",
    "tl = pd.Series([2, 3, 5], index=[0, 2, 4])  # t0, t1 for each feature obs\n",
    "bar_ix = range(tl.max() + 1)\n",
    "ind_m = get_ind_matrix(bar_ix, tl)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Prob: 0    0.368421\n",
      "1    0.157895\n",
      "2    0.473684\n",
      "dtype: float64\n",
      "\n",
      "Phi: [1, 1, 1]\n",
      "-----------------\n"
     ]
    }
   ],
   "source": [
    "# 4.7\n",
    "phi = [1, 1]\n",
    "for i in ind_m:\n",
    "    ind_m_ = ind_m[phi + [i]]\n",
    "    avg_u.loc[i] = get_ind_mat_average_uniqueness(ind_m_).iloc[-1]\n",
    "\n",
    "prob = avg_u / avg_u.sum()\n",
    "print('Prob: {}\\n'.format(prob))\n",
    "phi += [np.random.choice(ind_m.columns, p=prob)]\n",
    "print('Phi: {}'.format(phi))\n",
    "print('-----------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Completed"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
